ইন্টারফেস এবং ইমপ্লিমেন্টেশন

Microsoft Technologies - সি শার্প (C#) - ইন্টারফেস এবং এনক্যাপসুলেশন | NCTB BOOK

সি শার্পে (C#) ইন্টারফেস এবং ইমপ্লিমেন্টেশন অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP) এর মূল ধারণা। ইন্টারফেস হলো মেথড, প্রোপার্টি, ইভেন্ট, এবং ইনডেক্সারের সংজ্ঞা প্রদানকারী একটি কাঠামো, যা কোনো বাস্তবায়ন ছাড়াই থাকে। অন্যদিকে, ইমপ্লিমেন্টেশন হলো সেই ইন্টারফেসের মেথড বা প্রোপার্টিগুলোর বাস্তবায়ন, যা একটি ক্লাসে ইন্টারফেস ইমপ্লিমেন্ট করে করা হয়।

ইন্টারফেস (Interface)

ইন্টারফেস হলো একটি রূপরেখা বা ব্লুপ্রিন্ট যা মেথড, প্রোপার্টি, ইভেন্ট, এবং ইনডেক্সারের শুধু সিগনেচার প্রদান করে, কিন্তু এর কোনো বাস্তবায়ন থাকে না। একটি ক্লাসে ইন্টারফেস ইমপ্লিমেন্ট করার সময় এই মেথডগুলোকে পূর্ণ বাস্তবায়ন করতে হয়।

ইন্টারফেসের বৈশিষ্ট্য

  • ইন্টারফেসে কোনো মেম্বার (মেথড, প্রোপার্টি ইত্যাদি) বাস্তবায়ন ছাড়াই থাকে।
  • C# এ ইন্টারফেসের নাম সাধারণত "I" দিয়ে শুরু হয়।
  • একাধিক ইন্টারফেস একই ক্লাসে ইমপ্লিমেন্ট করা যায়।

ইন্টারফেসের গঠন

public interface IAnimal
{
    void MakeSound(); // মেথড সিগনেচার
}

ইমপ্লিমেন্টেশন (Implementation)

একটি ক্লাস যখন কোনো ইন্টারফেস ইমপ্লিমেন্ট করে, তখন তাকে ইন্টারফেসের সব মেথড, প্রোপার্টি, ইত্যাদির সুনির্দিষ্ট বাস্তবায়ন প্রদান করতে হয়। ইমপ্লিমেন্টেশন নিশ্চিত করে যে ক্লাসটি নির্দিষ্ট ফাংশনালিটি ধারণ করবে।

ইমপ্লিমেন্টেশনের গঠন

public class Dog : IAnimal
{
    public void MakeSound()
    {
        Console.WriteLine("Dog barks");
    }
}

উপরে Dog ক্লাস IAnimal ইন্টারফেস ইমপ্লিমেন্ট করেছে এবং MakeSound() মেথডের বাস্তবায়ন প্রদান করেছে।

উদাহরণ: ইন্টারফেস এবং ইমপ্লিমেন্টেশন

নিচে একটি উদাহরণ দেয়া হলো যেখানে একটি IAnimal ইন্টারফেস এবং দুটি ক্লাস (Dog এবং Cat) সেই ইন্টারফেস ইমপ্লিমেন্ট করেছে।

// ইন্টারফেস সংজ্ঞা
public interface IAnimal
{
    void MakeSound();
}

// Dog ক্লাস যা IAnimal ইন্টারফেস ইমপ্লিমেন্ট করছে
public class Dog : IAnimal
{
    public void MakeSound()
    {
        Console.WriteLine("Dog barks");
    }
}

// Cat ক্লাস যা IAnimal ইন্টারফেস ইমপ্লিমেন্ট করছে
public class Cat : IAnimal
{
    public void MakeSound()
    {
        Console.WriteLine("Cat meows");
    }
}

ইন্টারফেস এবং ইমপ্লিমেন্টেশন ব্যবহার করার উদাহরণ প্রোগ্রাম

class Program
{
    static void Main(string[] args)
    {
        IAnimal dog = new Dog();
        dog.MakeSound(); // Output: Dog barks

        IAnimal cat = new Cat();
        cat.MakeSound(); // Output: Cat meows
    }
}

ইন্টারফেসের মাধ্যমে পলিমরফিজম (Polymorphism)

ইন্টারফেস ব্যবহারের মাধ্যমে পলিমরফিজম প্রয়োগ করা যায়। ইন্টারফেস টাইপের একটি ভেরিয়েবল বা রেফারেন্সের মাধ্যমে বিভিন্ন ক্লাসের মেথড কল করা যায়, যা পলিমরফিজমকে সম্ভব করে।

উদাহরণ: পলিমরফিজমের মাধ্যমে ইন্টারফেস ব্যবহার

public interface IShape
{
    double GetArea();
}

public class Circle : IShape
{
    public double Radius { get; set; }

    public Circle(double radius)
    {
        Radius = radius;
    }

    public double GetArea()
    {
        return Math.PI * Radius * Radius;
    }
}

public class Rectangle : IShape
{
    public double Width { get; set; }
    public double Height { get; set; }

    public Rectangle(double width, double height)
    {
        Width = width;
        Height = height;
    }

    public double GetArea()
    {
        return Width * Height;
    }
}

উপরের উদাহরণে, IShape ইন্টারফেসে GetArea() মেথডের সিগনেচার আছে। Circle এবং Rectangle ক্লাসগুলো IShape ইন্টারফেস ইমপ্লিমেন্ট করেছে এবং নিজেদের মতো GetArea() মেথডের বাস্তবায়ন করেছে।

উদাহরণ প্রোগ্রাম: ইন্টারফেসের মাধ্যমে পলিমরফিজম

class Program
{
    static void Main(string[] args)
    {
        IShape circle = new Circle(5.0);
        IShape rectangle = new Rectangle(4.0, 6.0);

        Console.WriteLine("Circle Area: " + circle.GetArea());      // Output: Circle Area: 78.5398
        Console.WriteLine("Rectangle Area: " + rectangle.GetArea()); // Output: Rectangle Area: 24
    }
}

ইন্টারফেস এবং ইমপ্লিমেন্টেশনের সুবিধা

  1. কোডের পুনঃব্যবহারযোগ্যতা: ইন্টারফেস ব্যবহার করে একাধিক ক্লাসে একই ফাংশনালিটি ইমপ্লিমেন্ট করা যায়।
  2. পলিমরফিজম: ইন্টারফেসের মাধ্যমে পলিমরফিজম সম্ভব, যা একক রেফারেন্সের মাধ্যমে ভিন্ন ভিন্ন ক্লাসের মেথড কল করতে দেয়।
  3. কোডের মানোন্নয়ন: ইন্টারফেস নির্দিষ্ট ফাংশনালিটি প্রয়োগে বাধ্য করে, যা কোডের মান এবং নিয়মানুবর্তিতা বাড়ায়।
  4. ডিপেনডেন্সি ইঞ্জেকশন: ইন্টারফেসের মাধ্যমে ডিপেনডেন্সি ইঞ্জেকশন প্রয়োগ করা সহজ হয়, যা কোডের মডুলারিটি এবং টেস্টিং সুবিধা বাড়ায়।

সারসংক্ষেপ

সি শার্পে ইন্টারফেস হলো একটি রূপরেখা যা ক্লাসগুলো ইমপ্লিমেন্ট করে নির্দিষ্ট ফাংশনালিটি প্রদান করতে বাধ্য হয়। ইন্টারফেস কেবল মেথড বা প্রোপার্টির সিগনেচার প্রদান করে, এবং ক্লাসগুলোর মাধ্যমে তাদের সুনির্দিষ্ট বাস্তবায়ন নির্ধারণ করা হয়, যা ইমপ্লিমেন্টেশন নামে পরিচিত। ইন্টারফেস এবং ইমপ্লিমেন্টেশন কোডের পুনঃব্যবহারযোগ্যতা, পলিমরফিজম, এবং ফাংশনালিটি নিয়ন্ত্রণে সহায়ক।

Content added By
Promotion